package com.itheima.d6_singleInstance;

/**
 *  确保一个类只有一个对象。
 *  *
 * 写法
 * 把类的构造器私有。
 *  定义一个类变量记住类的一个对象。
 *  定义一个类方法，返回对象。
 *
 *  * 懒汉单例模式的特点是什么？
 *  * 要用类的对象时才创建对象（延迟加载对象）
 */
public class B {
    // 2、定义一个类变量，用于存储这个类的一个对象。
    private static B b;

    private static int count;  //用来计数

    // 1、把类的构造器私有
    private B(){

    }

    // 3、定义一个类方法，这个方法要保证第一次调用时才创建一个对象，后面调用时都会用这同一个对象返回。
    public static B getInstance(){
        if(b == null){
            System.out.println("懒汉式单例，还没创建对象，b是空的，要用到才会创建b: "+b);
            System.out.println("第一次创建对象~");
            b = new B();
            System.out.println("创建好了b： "+b);
        }
        System.out.println("=========懒汉式单例=========");

        System.out.println("此时就不是第一次创建对象了，是第"+(count++)+"次判断,所以在懒汉式单例设计模式里面就不会再创建对象了");
        return b;
    }
}
